package com.zilu.digitaltwin.dto.resp;

import com.alibaba.fastjson.annotation.JSONField;

import com.zilu.digitaltwin.dto.UnitInfoDTO;
import lombok.Data;

import java.util.List;

/**
 * @Author :heguangyao
 * @description :建筑物相关信息
 * @Date :2023/1/6 17:35
 **/
@Data
public class BuildingDetailsRespDTO {
    /**
     * 基本信息
     */
    private EntityBasicInfoDataQRespDTO basicInfo;

    /**
     * 建筑物详情
     */
    private BuildingBizDetailDTO buildingBizDetail;

    /**
     * 房屋使用情况
     */
    private HousingUsageInfoDTO housingUsageInfo;

    /**
     * 人口数据概览
     */
    private PopulationDataOverviewDTO populationDataOverview;

    /**
     * 全部人口信息
     */
    private List<PersonInfoRespDTO> peopleInfo;

    /**
     * 分户图
     */
    private List<UnitInfoDTO> roomDistribution;

    /**
     *
     */
    @Data
    public static class BuildingBizDetailDTO {

        private Boolean interlayer;

        /**
         * 建筑物高度类型(需要做编码转译)
         */
        @JSONField(name = "building_height_type_no")
        private String buildingHeightType;

        /**
         * 单元数
         */
        @JSONField(name = "unit_cnt")
        private Integer unitCnt;
        /**
         * 楼层数
         */
        @JSONField(name = "floor_cnt")
        private Integer floorCnt;
        /**
         * 占地面积
         */
        @JSONField(name = "cover_area")
        private Double coverArea;
        /**
         * 建筑面积
         */
        @JSONField(name = "building_area")
        private Double buildingArea;
        /**
         * 建筑物高度
         */
        @JSONField(name = "building_height")
        private Double buildingHeight;
    }

    @Data
    public static class HousingUsageInfoDTO {
        /**
         * 总数
         */
        private int total;
        /**
         * 自住
         */
        private int selfOccupation;
        /**
         * 出租
         */
        private int rental;
        /**
         *企业
         */
        private int enterprise;
        /**
         * 商用
         */
        private int commercial;
        /**
         * 公共服务
         */
        private int publicService;
        /**
         * 其他
         */
        private int other;
    }

    @Data
    public static class PopulationDataDetailDTO {
        /**
         * 年份
         */
        private Integer year;

        /**
         * 户籍人口
         */
        private Integer household;

        /**
         * 流动人口
         */
        private Integer flow;

        /**
         * 总和
         * @return
         */
        public Integer sum(){
            return (this.household == null ? 0 : this.household)
                    + (this.flow == null ? 0 : this.flow);
        }
    }

    @Data
    public static class PopulationDataOverviewDTO {

        private Integer total;
        private List<PopulationDataDetailDTO> populationDataDetails;

    }
}
